One fundamental system management task is the allocation of computer resources to applications. Today's information technology systems typically pre-allocate and pre-install servers and storage resources for customer applications. In order to meet predetermined quality of service (QoS) requirements, however, servers are typically over-provisioned and under utilized. In a resource-on-demand environment, such as a single data center or a utility computing environment, a large number of resources are used to meet the computing demands of customers. In these environments, over-provisioning results in substantial expenses for wasted resources.
Over-provisioning may be minimized if computing demands are highly predictable. However, in some instances, predicting computing needs is difficult For example, thin clients are becoming increasingly popular as a way to manage user applications. A thin client is typically connected to one or more servers that run all the user applications remotely in a remote desktop session with the user. However, the computing needs of a remote desktop session are difficult to predict, because a user may run any number of applications in the session at any time. Thus, a system administrator may substantially over-provision resources for a remote desktop session to ensure the user is receiving a predetermined QoS.